package com.ssy.lingxi.report.api.feign;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.report.api.vo.request.*;
import com.ssy.lingxi.report.api.vo.response.ActiveMerchantVO;
import com.ssy.lingxi.report.api.vo.response.PopularShopVO;
import com.ssy.lingxi.report.api.vo.response.PurchasePortalStatisticsVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;
import java.util.List;

/**
 * 报表服务Feign接口
 * @author 伍将
 * @date 2020/11/18
 * @version 2.0.0
 */
@FeignClient(name = "report-service")
public interface ReportControllerFeign {

    /**
     * 批量新增操作通知
     * @param operateVOList 操作通知集合
     * @return 操作结果
     */
    @RequestMapping("/report/feign/addOperateNoticeList")
    Wrapper<Void> addOperateNoticeList(@RequestBody @Valid List<OperateNoticeVO> operateVOList);

    /**
     * 新增操作通知
     * @param operateVO 操作通知集合
     * @return 操作结果
     */
    @RequestMapping("/report/feign/addOperateNotice")
    Wrapper<Void> addOperateNotice(@RequestBody @Valid OperateNoticeVO operateVO);

    /**
     * 新增每日订单
     * @param addOrderVO 新增订单参数
     * @return 操作结果
     */
    @RequestMapping("/report/feign/addOrder")
    Wrapper<Void> addOrder(@RequestBody @Valid AddOrderVO addOrderVO);

    /**
     * 批量新增每日订单
     * @author 伍将
     * @date 2021/2/4
     * @param addOrderVO: 新增订单参数
     * @return 操作结果 操作结果
     **/
    @RequestMapping("/report/feign/addOrderList")
    Wrapper<Void> addOrderList(@RequestBody @Valid List<AddOrderVO> addOrderVO);

    /**
     * 获取人气店铺Id
     * @param request：请求参数
     * @return 操作结果
     */
    @RequestMapping("/report/feign/getPopularShopIdList")
    Wrapper<List<Long>> getPopularShopIdList(@RequestBody @Valid PopularShopRequest request);

    /**
     * 获取人气店铺信息
     * @param popularShopRequest 请求参数
     * @return 操作结果
     */
    @RequestMapping("/report/feign/getPopularShopList")
    Wrapper<List<PopularShopVO>> getPopularShopList(PopularShopRequest popularShopRequest);

    /**
     * 获取活跃(采购)商户
     * @return 操作结果
     */
    @RequestMapping("/report/feign/getActiveMerchantList")
    Wrapper<List<ActiveMerchantVO>> getActiveMerchantList();

    /**
     * 获得采购门户-采购信息统计
     * @param request：请求参数
     * @return 操作结果
     */
    @RequestMapping("/report/feign/getPurchasePortalStatisticsInfo")
    Wrapper<PurchasePortalStatisticsVO> getPurchasePortalStatisticsInfo(@RequestBody @Valid PurchasePortalRequest request);

    /**
     * 获得采购门户-采购信息统计列表
     * @param requestList：请求参数
     * @return 操作结果
     */
    @RequestMapping("/report/feign/getPurchasePortalStatisticsInfoList")
    Wrapper<List<PurchasePortalStatisticsVO>> getPurchasePortalStatisticsInfoList(@RequestBody @Valid List<PurchasePortalRequest> requestList);


    /**
     * 新增下级会员申请
     * @param addOrderVO 新增订单参数
     * @return 操作结果
     */
    @RequestMapping("/report/feign/addSubMember")
    Wrapper<Void> addSubMember(@RequestBody @Valid AddSubMemberVO addOrderVO);
}
